/*
 * 1、理解对象的概念及其作用
 * 2、理解实例的概念及其作用
 * 3、如何使用对象: 通过对象来创建实例
 * 3、如何使用实例: 访问属性(取值和赋值)、调用方法
 */

// 定义"对象"(同时也定义了构造函数)
function House(c,f,a,w,d){
    this.ceiling = c ; // 天花板
    this.floor = f ; // 地板
    this.walls = a ; // 墙壁
    this.window = w ; // 窗户
    this.door = d ; // 门
    // 如果某个属性值是个函数，则称其为方法(method)
    this.toString = function(){
        let s = '' ;
        s += '天花板: ' + this.ceiling ;
        s += ', 地板: ' + this.floor ;
        s += ', 墙壁: ' + this.walls ;
        s += ', 窗户: ' + this.window ;
        s += ', 门: ' + this.door ;
        return s ;
    }
}

// 创建实例 ( 通过构造函数来创建实例 )
let h = new House( '琉璃' , '大理石' , '混凝土' , '塑钢' , '铝合金' );
// 获取实例属性 ( 获取 变量 h 所引用的 House实例 中 ceiling 属性的值 )
console.log( h.ceiling );
// 为属性赋值 ( 为 变量 h 所引用的 House实例 中 ceiling 属性 赋值 )
h.ceiling = '混凝土' ;
console.log( h.ceiling );

let x = h.toString();
console.log( x );

console.log( '- - - - - - - - - - - - - - - - - - - - - - - - -' );

// 创建实例 ( 通过构造函数来创建实例 )
let u = new House( '木版' , '木地板' , '木头' , '木窗' , '木门' );
console.log( u.door );

let s = u.toString(); // 调用实例方法返回当前实例的字符串形式
console.log( s );